package org.maiyoframework.core.jpa;

/**
 * JPA查询辅助，条件语句对象
 * 注:parameter为null,则不添加参数占位符
 * 
 * @author maiYo
 * 
 */
public class Condition {
	
	/**
	 * 查询属性为空/非空,写法如:'name is not null'
	 * 
	 * @param property
	 */
	public Condition(String property) {
		this.property = property;
		this.parameter = null;
	}

	/**
	 * 构造条件语句
	 * 
	 * @param property
	 *            属性
	 * @param parameter
	 *            查询参数
	 */
	public Condition(String property, Object parameter) {
		this.property = property;
		this.parameter = parameter;
	}

	/**
	 * 构造条件语句
	 * 
	 * @param property
	 *            属性与运算符
	 * @param parameter
	 *            查询参数
	 * @param connector
	 *            连接符
	 */
	public Condition(String property, Object parameter, Connector connector) {
		this.property = property;
		this.parameter = parameter;
		this.connector = connector;
	}
	
	/**
	 * JPA查询辅助，条件语句对象
	 * 注:parameter为null,则不添加参数占位符
	 */
	public Condition() {
		super();
	}

	/** 属性 */
	private String property;
	/** 查询参数 */
	private Object parameter;
	/** 连接符 */
	private Connector connector = Connector.AND;

	public static enum Connector {
		AND, OR
	}

	/**
	 * 获取属性与运算符
	 * 
	 * @return
	 */
	public String getProperty() {
		return property;
	}

	/**
	 * 设置属性与运算符，如'username ='
	 * 
	 * @param property
	 */
	public void setProperty(String property) {
		this.property = property;
	}

	/**
	 * 获取查询参数
	 * 
	 * @return
	 */
	public Object getParameter() {
		return parameter;
	}

	/**
	 * 设置查询参数
	 * 
	 * @param parameter
	 *            查询参数
	 */
	public void setParameter(Object parameter) {
		this.parameter = parameter;
	}

	/**
	 * 获取连接符类型
	 * 
	 * @return
	 */
	public Connector getConnector() {
		return connector;
	}

	/**
	 * 设置连接符类型，Connector.AND、Connector.OR
	 * 
	 * @param connector
	 *            连接符
	 */
	public void setConnector(Connector connector) {
		this.connector = connector;
	}

}
